layui.define(["jquery", "layer", "form"], function(s) {
	var d = layui.jquery,
		b = layui.form,
		r = layui.layer,
		k = layui.device(),
		h = {
			read: (function() {
				var u =
					".slider-item{height:38px;line-height:38px;background-color:#d0d0d0;position:relative;border: 1px solid white;}.slider-bg{position:absolute;width:40px;height:100%;z-index:100}.slider-btn{width:40px;height:96%;position:absolute;border:1px solid #ccc;cursor:move;text-align:center;background-color:#fff;user-select:none;color:#666;z-index:120}.slider-btn-success{font-size:26px}.slider-text{position:absolute;text-align:center;width:100%;height:100%;user-select:none;font-size:14px;color:#fff;z-index:120}.slider-error{animation:glow 800ms ease-out infinite alternate;}@keyframes glow{0%{border-color:#e6e6e6}100%{border-color:#ff5722}}",
					v = document.createElement("style");
				v.innerHTML = u;
				v.type = "text/css";
				(d("head link:last")[0] && d("head link:last").after(v)) || d("head").append(v)
			})()
		},
		m = function(u) {
			return u[0]
		},
		o = function() {
			var u = this;
			return {
				isOk: function() {
					return u.isOk.call(u)
				},
				reset: function() {
					return u.reset.call(u)
				},
				version: "1.7.1"
			}
		},
		g = "sliderVerify",
		i = "slider-btn",
		j = "slider-bg",
		q = "slider-text",
		a = "layui-icon-next",
		t = "layui-icon-ok-circle",
		f = "slider-btn-success",
		// n = "layui-bg-green",
		n = "layui-bg-blue",
		c = "slider-error",
		p = "请拖动滑块验证",
		e = "验证通过",
		l = function(u) {
			var v = this;
			v.config = d.extend({}, v.config, u);
			v.render()
		};
	l.prototype.config = {
		elem: "",
		onOk: null,
		isOk: false,
		isAutoVerify: true,
		timer: null,
		bg: n,
		text: p
	};
	l.prototype.render = function() {
		var w = this,
			u = w.config,
			v = d(u.elem);
		if (!v[0]) {
			return
		}
		if (u.domid) {
			u.domid.remove()
		}
		u.domid = w.createIdNum();
		var x = d(['<div id="' + u.domid + '"' + (u.isAutoVerify ? 'lay-verify="sliderVerify"' : "") +
			'class="slider-item">', '<div class="' + j + " " + u.bg + '"></div>', '<div class="' + q + '">' + u.text +
			"</div>", '<div class="' + i + ' layui-icon layui-icon-next"></div>'
		].join(""));
		v.hide().after(x);
		u.domid = d("#" + u.domid);
		w.events();
		if (u.isAutoVerify) {
			b.verify({
				sliderVerify: function(y, z) {
					if (!y) {
						z.classList.add(c);
						return u.text
					}
				}
			})
		}
	};
	l.prototype.isMobile = function() {
		return (k.os == "ios" || k.os == "android" || k.android || k.ios) || (k.weixin && typeof k.weixin === Boolean)
	};
	l.prototype.createIdNum = function() {
		return (g + (+new Date()).toString() + Math.random().toString().substr(2, 7))
	};
	l.prototype.isOk = function() {
		return this.config.isOk
	};
	l.prototype.error = function(u) {
		return r.msg(u, {
			icon: 5
		})
	};
	l.prototype.distance = function() {
		var u = this.config.container;
		return u.box.offsetWidth - u.btn.offsetWidth
	};
	l.prototype.reset = function() {
		this.config.isOk = false;
		return this.render()
	};
	l.prototype.resize = function(w) {
		var v = this,
			u = v.config.container;
		var w = w || v.distance();
		u.btn.style.left = w + "px";
		u.bg.style.width = w + "px"
	};
	l.prototype.cancelTransition = function() {
		var u = this.config.container;
		this.config.domid[0].classList.remove(c);
		u.btn.style.transition = "";
		u.bg.style.transition = ""
	};
	l.prototype.down = function(y) {
		var x = this,
			w = x.config,
			v = w.container,
			y = y || window.event,
			z = y.clientX || y.touches[0].clientX;
		x.cancelTransition();
		var u = function(A) {
			x.move(z, A)
		};
		x.events.move = u;
		if (x.isMobile()) {
			document.addEventListener("touchmove", x.events.move)
		} else {
			document.onmousemove = u
		}
		if (navigator.userAgent.indexOf("UCBrowser") > -1) {
			y.preventDefault()
		}
	};
	l.prototype.move = function(C, B) {
		var A = this,
			y = A.config,
			u = y.container;
		var B = B || window.event;
		var w = B.clientX || B.touches[0].clientX;
		var z = w - C;
		if (z > u.distance) {
			z = u.distance
		} else {
			if (z < 0) {
				z = 0
			}
		}
		u.btn.style.left = z + "px";
		u.bg.style.width = z + "px";
		if (z == u.distance) {
			u.text.innerHTML = e;
			var v = window.getComputedStyle ? window.getComputedStyle(u.bg, null) : u.bg.currentStyle;
			u.btn.style.border = "1px solid " + v.backgroundColor;
			u.btn.style.color = v.backgroundColor;
			u.btn.classList.remove(a);
			u.btn.classList.add(t, f);
			y.isOk = true;
			u.box.value = true;
			if (A.isMobile()) {
				u.btn.removeEventListener("touchstart", A.events.down, false);
				document.removeEventListener("touchmove", A.events.move, false)
			} else {
				u.btn.onmousedown = null;
				document.onmousemove = null
			}
			y.onOk && typeof y.onOk == "function" && y.onOk();
			return
		}
		var x = function(D) {
			A.stop(D)
		};
		A.events.seup = x;
		if (A.isMobile()) {
			document.addEventListener("touchend", x)
		} else {
			document.onmouseup = x
		}
	};
	l.prototype.stop = function(x) {
		var w = this,
			v = w.config,
			u = v.container;
		if (w.isOk()) {
			return
		} else {
			u.btn.style.left = 0;
			u.bg.style.width = 0;
			u.btn.style.transition = "left 1s";
			u.bg.style.transition = "width 1s"
		}
		document.onmousemove = null;
		document.onmouseup = null;
		if (w.isMobile()) {
			document.removeEventListener("touchmove", w.events.move, false);
			document.removeEventListener("touchend", w.events.seup, false)
		}
	};
	l.prototype.events = function() {
		var z = this,
			y = z.config;
		if (!y.domid) {
			return z.error("创建滑块验证失败")
		}
		var x = y.domid.find("." + i),
			w = y.domid.find("." + j),
			A = y.domid.find("." + q),
			v = {
				box: m(y.domid),
				btn: m(x),
				bg: m(w),
				text: m(A)
			};
		y.container = v;
		v.distance = z.distance();
		var B = function(C) {
			z.down(C)
		};
		z.events.down = B;
		if (z.isMobile()) {
			v.btn.addEventListener("touchstart", z.events.down)
		} else {
			v.btn.onmousedown = B
		}
		var u = d(window);
		u.on("resize", y.domid, function() {
			if (z.config.isOk) {
				z.resize()
			} else {
				clearTimeout(y.timer);
				y.timer = setTimeout(function() {
					z.render()
				}, 400)
			}
		})
	};
	h.render = function(u) {
		var v = new l(u);
		return o.call(v)
	};
	s(g, h)
});
